<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>



</head>
<body>















    <script>
        // 1. Promise是一种函数的异步解决方案.传入一个函数,这个函数有两个参数resolve和reject
        // resolve 成功的回调函数  reject 失败的回调函数
        // 2. Promise的状态有三种 pending(等待) fulfilled(成功) rejected(失败) 
        // 3. Promise的状态只能从pending->fulfilled或者pending->rejected
        // 4. Promise的状态一旦改变就不能再改变
    
      let p1=  new Promise((resolve,reject)=>{
          reject("p1失败")   
          resolve("p1成功")
        })

        let p2=  new Promise((resolve,reject)=>{
            reject("p2失败")   
            resolve("p2成功")
            console.log("p2")
        })
       
        let p3=  new Promise((resolve,reject)=>{
            resolve("p3成功")
            reject("p3失败")   
        })
// 
// Promise.all Promise.race Promise.allSettled Promise.any

// Promise.all 同时执行多个promise实例返回一个新实例  只有所有的实例都成功才成功 所有实例传入的参数组成一个数组传入新实例  有一个失败就失败
// Promise.race 同时执行多个promise实例返回一个新实例  要看第一个执行完成的实例状态.如果是true  那么返回的就是true  如果是false 那么返回的就是false
// Promise.any  同时执行多个promise实例返回一个新实例  只要有一个实例成功就成功  所有实例都失败才失败
// Promise.allSettled是同时执行多个promise实例.返回一个成功的promise实例.在成功的回调里面返回一个数组.数组里面是每个实例的状态和值
// Promise.all([p1,p2,p3]).then((res)=>{console.log("新实例成功",res)}).catch((err)=>{console.log("新实例",err)})
// Promise.race([p1,p2,p3]).then((res)=>{console.log("新实例成功",res)}).catch((err)=>{console.log("新实例",err)})
// Promise.any([p1,p2,p3]).then((res)=>{console.log("新实例成功",res)}).catch((err)=>{console.log("新实例",err)})
Promise.allSettled([p1,p2,p3]).then((res)=>{console.log("新实例成功",res)}).catch((err)=>{console.log("新实例失败",err)})



        // function getList(callback){
        //   return new Promise((resolve,reject)=>{
        //     setTimeout(()=>{
        //         resolve([1,2,3])
        //     },2000) 
        //   })
        // }
        
        // // userList[]
        // async function  clickgetList(){
        //     const result = await   getList()

        //     console.log(result)
        // }
      

// ES6的模块 
// export const test=()=>{}   可以抛出多个  导入的时候加import {test} from 名字不能改变
// export default test  只能抛出一个  导入的时候可以随便取名字  不用加{}  import suming from  

        </script>
       
</body>
</html>